import { applyDecorators, SetMetadata, UseInterceptors } from '@nestjs/common'
import { RateLimitInterceptor } from './rate-limit.interceptor'

/**
 * 限流装饰器：同时设置规则并启用拦截器
 * @param limit 时间窗口内最大请求次数
 * @param windowMs 时间窗口（毫秒，默认60000ms=1分钟）
 */
export function RateLimit(limit: number, windowMs: number = 60 * 1000) {
  return applyDecorators(
    // 设置限流规则元数据（供拦截器读取）
    SetMetadata('rateLimit', { limit, windowMs }),
    UseInterceptors(RateLimitInterceptor)
  )
}